import Mock from 'mockjs'

// get请求从config.url获取参数，post从config.body中获取参数
function param2Obj(url) {
const search = url.split('?')[1]
if (!search) {
return {}
}
return JSON.parse(
'{"' +
decodeURIComponent(search)
  .replace(/"/g, '\\"')
  .replace(/&/g, '","')
  .replace(/=/g, '":"') +
'"}'
)
}

let List = []
const count = 200

for (let i = 0; i < count; i++) {
List.push(
Mock.mock({
  id: Mock.Random.guid(),
  name: Mock.Random.cname(),
  addr: Mock.mock('@county(true)'),
  'age|18-60': 1,
  birth: Mock.Random.date(),
  sex: Mock.Random.integer(0, 1)
})
)
}

export default {
/**
* 获取列表
* 要带参数 name, page, limt; name可以不填, page,limit有默认值。
* @param name, page, limit
* @return {{code: number, count: number, data: *[]}}
*/
getUserList: config => {
const { name, page = 1, limit = 20 } = param2Obj(config.url)
const mockList = List.filter(user => {
  if (name && user.name.indexOf(name) === -1 && user.addr.indexOf(name) === -1) return false
  return true
})
const pageList = mockList.filter((item, index) => index < limit * page && index >= limit * (page - 1))
return {
  code: 200,
  data: {
    list: pageList,
    count: mockList.length,
  }
}
},
/**
* 增加用户
* @param name, addr, age, birth, sex
* @return {{code: number, data: {message: string}}}
*/
createUser: config => {
const { name, addr, age, birth, sex } = JSON.parse(config.body)
console.log(JSON.parse(config.body))
List.unshift({
  id: Mock.Random.guid(),
  name: name,
  addr: addr,
  age: age,
  birth: birth,
  sex: sex
})
return {
  code: 20000,
  data: {
    message: '添加成功'
  }
}
},
/**
* 删除用户
* @param id
* @return {*}
*/
deleteUser: config => {
const { id } = param2Obj(config.url)
if (!id) {
  return {
    code: -999,
    message: '参数不正确'
  }
} else {
  List = List.filter(u => u.id !== id)
  return {
    code: 20000,
    message: '删除成功'
  }
}
},
/**
* 批量删除
* @param config
* @return {{code: number, data: {message: string}}}
*/
batchremove: config => {
let { ids } = param2Obj(config.url)
ids = ids.split(',')
List = List.filter(u => !ids.includes(u.id))
return {
  code: 20000,
  data: {
    message: '批量删除成功'
  }
}
},
/**
* 修改用户
* @param id, name, addr, age, birth, sex
* @return {{code: number, data: {message: string}}}
*/
updateUser: config => {
const { id, name, addr, age, birth, sex } = JSON.parse(config.body)
const sex_num = parseInt(sex)
List.some(u => {
  if (u.id === id) {
    u.name = name
    u.addr = addr
    u.age = age
    u.birth = birth
    u.sex = sex_num
    return true
  }
})
return {
  code: 20000,
  data: {
    message: '编辑成功'
  }
}
}
}